Linux 调试手段,涵盖 printk 使用、动态打印、trace

🔍 溯源 ✍️ Jason | 📅 2026-03-12 | 👍 0 | 原帖↗
#知识星球 #立芯嵌入式 #来源/立芯星球 #技术/Linux调试 #技术/ftrace #质量/精华

原帖 | Jason | 2026-03-12 11:15 | 👍0 | 阅读约1

Linux 调试手段,涵盖 printk 使用、动态打印、trace 使用、查看调用栈、读写内存、Coredump、Watchpoint、KASAN 等内容。

  1. printk 与打印等级:Linux 内核开发者常用 printk 调试,它与 printf 类似但提供输出等级,内核有 8 个输出等级,默认等级通常为 4,可在开发和发布阶段调整,还能通过多种方式修改等级,内核也对 printk 进行了封装,pr_debug 有三种情况。

  2. 动态打印:使用动态输出可在不重新编译内核的情况下打印 debug 信息,需开启 CONFIG_DYNAMIC_DEBUG,依赖 CONFIG_DEBUG_FS,还需挂载 debugfs 文件系统,可按文件、模块、函数等开启动态输出。

  3. ftrace:是其他 trace 的基础,使用前需确保内核编译相关配置选项,/sys/kernel/debug/trace 目录下有多种跟踪器和事件,常用跟踪器有 nop、function 等。

  4. BUG_ON/WARN_ON:BUG_ON 满足条件会触发 BUG 使系统宕机,WARN_ON 不会触发 panic 但会输出调用栈信息。

  5. dump_stack:用于打印函数调用关系,打印信息需从下往上看。

  6. devmem:可直接读写寄存器,依赖 /dev/mem 设备节点,需开启内核配置,给出命令格式和使用示例。

  7. Coredump 解析:属于高级 debug 技巧,依赖芯片原厂实现。异常时会生成文件记录 log,记录问题现场寄存器值,记录 bus 状态,DB 文件等。 后续配合符号文件可以解析出来 debug 信息。


相关笔记